<?php
include_once 'objetos/Usuario.php';
include_once 'objetos/Opcion.php';
include_once 'objetos/Asamblea.php';
?>

<?php

if (isset($_SESSION['login']) && $_SESSION['login']) {
    $conexion = new Interfaz_conexion($db_host, $db_username, $db_password, $db_dbname);
    $conexion->conectar();
    $usuario = $conexion->getUsuario($_SESSION['id']);

    

    if (isset($_GET['asamblea'])) { // Si se ha especificado una asamblea mediante GET, se muestra información sobre la asamblea
        $asamblea = $conexion->getAsamblea(htmlentities($_GET['asamblea']));
        echo "<h1 class='titulo'>Asamblea de {$asamblea->getNombre()}</h1>";
       
        echo "<h2>{$asamblea->getNombre()}</h2>";

        // Se comprueba si la votación existe en la BBDD, si $asamblea es un entero, significa que hubo un error
        if (is_integer($asamblea) == false) {

            // Se comprueban los permisos del usuario para acceder a la asamblea solicitada
            if ($comprobador->esAsambleaValida($asamblea, $usuario)) {
                $votaciones = $conexion->getListasVotaciones($_GET['asamblea']);


                // Se comprueba si la asamblea tiene votaciones asociadas
                if (is_integer($votaciones) == false && count($votaciones) != 0) {
                   
                    echo "<p>Lista de votaciones disponibles</p>";
?>
                    <table id="tabla_votaciones">
                    <tr>
                    	<th>Asamblea</th>
                    	<th>Descripcion</th>
                    </tr>
<?
                    // Se representau na lista con cada votación existente
                    foreach ($votaciones as $votacion) {
                        echo '<tr>';
?>
        <td><a href="index.php?votacion=<? echo $votacion['id'] ?>"><? echo html_entity_decode($votacion['titulo']) ?></a></td>
        <td><? echo html_entity_decode($votacion['descripcion']) ?></td>
<?
                        echo '</tr>';
                    }
                    echo '</table>  ';
           ?>
            <p><a class="volver" href="index.php?start">Lista de asambleas</a></p>
            <?
                }
                else
                    echo "No hay votaciones disponibles";
            }
            else
                echo "No tienes acceso a esta asamblea";
        }
        else
            echo "La asamblea especificada no existe";
    }
    else if (isset($_GET['votacion'])) { // Si se solicitó mediante GET ver una determinada votación...
        $votacion_actual = $conexion->getVotacion(htmlentities($_GET['votacion']));
        $asamblea = $conexion->getAsamblea($votacion_actual->getIdAsamblea());
        echo "<h1 class='titulo'>Asamblea de {$asamblea->getNombre()}</h1>";

        // Se comprueba si la votación existe en la BBDD, si $votacion_actual es un entero, significa que hubo un error
        if (is_integer($votacion_actual) == false) {
            $asamblea = $conexion->getAsamblea($votacion_actual->getIdAsamblea());
            echo "<h2>Votación</h2>";

            // Se comprueba si el usuario tiene permisos de acceso a la votación
            if ($comprobador->esAsambleaValida($asamblea, $usuario)) {
                $numero_opciones = $votacion_actual->getNumOpciones();

                // Si la votación tiene opciones asociadas...
                if ($numero_opciones > 0) {


                    if (!isset($_POST['voto'])) { // Comprueba que todavía no se haya votado
                            echo "<h2>" . html_entity_decode($votacion_actual->getTitulo())."</h2>";
                            echo "<div class='votacion_descripcion'><p>".html_entity_decode($votacion_actual->getDescricpion())."</p></div>";
                            echo "<p><b>Opciones</b></p>";
                            if ($votacion_actual->getMultiples() > 1)
                                    echo "<p>Selecciona hasta {$votacion_actual->getMultiples()} opciones</p>";
                            echo '<br/>';


                        if (!isset($_GET['resultado'])) { // No se ha pedido ver el resultado de la votación
                            echo '<form action="index.php?votacion='.$_GET["votacion"].'" method="POST">';
                            echo "<input type='hidden' name='votacion' value='{$_GET['votacion']}'/>";
                            echo '<ol>';
                            for ($contador = 0; $contador < $numero_opciones; $contador++) {
                               
                                if ($votacion_actual->getMultiples() > 1){
                                    ?>
                                        <li> <input type='checkbox' name='voto[]' value='<? echo $votacion_actual->getOpciones($contador)->getIdOpcion() ?>'/>
                                    <?
                                }
                                else{
                                    ?>
                                        <li> <input type='radio' name='voto' value='<? echo $votacion_actual->getOpciones($contador)->getIdOpcion() ?>'/>
                                    <?
                                }
?>

                          
                                    <label><? echo $votacion_actual->getOpciones($contador)->getNombre() ?></label>
                                </li>
<?
                            }
                            echo '</ol>';
                            echo "<input type='submit' name='accion'  value='VOTAR'/>";
                            echo ' </form>';
                        }
                            else{

                            echo '<ul>';
                            for ($contador = 0; $contador < $numero_opciones; $contador++) {
                                $num_votos = $votacion_actual->getOpciones($contador)->getVotos();
                                $num_votos -= $conexion->getVotosInvalidos($votacion_actual->getOpciones($contador)->getIdOpcion());
                                echo '<li>'.$votacion_actual->getOpciones($contador)->getNombre().' '.$num_votos.'</li>';
                                
                            }
                            echo '</ul>';
                                
                            }
                    }
                    else { // Si el parametro $_POST['voto'] existe, se ha realizado la votación, este parametro lleva un array con las opciones votadas

                        $voto = $_POST['voto'];
                        if ($voto < 1) {
                                    echo "La opcion votada no existe";
                                } else {

                                    //Comprueba si el usuario ha votado antes
                                    if (!$conexion->isUSuarioVotado($usuario->getId(), $votacion_actual->getIdVotacion())) {

                                        // Comprueba que la fecha actual del servidor no es superior a la fecha de finalización de la votación
                                        if (strtotime($votacion_actual->getFecha_fin()) > time()) {

                                            //Si se han seleccionado opciones multiples...
                                            if ($votacion_actual->getMultiples() > 1) {
                                                if (count($voto) <= $votacion_actual->getMultiples()) {
                                                    foreach ($voto as $opcion) {
                                                        $conexion->conectar();
                                                        $conexion->addVoto($votacion_actual->getIdVotacion(), $opcion, $usuario->getId());
                                                        $conexion->desconectar();
                                                    }
                                                    $conexion->conectar();
                                                }

                                                // Si se han seleccionado más votaciones que las permitidas
                                                else{
                                                    $error = 1;
                                                   ?>
                                                        <p class="error">Error, has seleccionado más opciones de las permitidas</p>
                                                    <?
                                                }

                                                //Si solamente se ha seleccionado una opción
                                            } else {
                                                $conexion->addVoto($votacion_actual->getIdVotacion(), $voto, $usuario->getId());
                                            }
                                            if ($error != 1)
                                                echo "<p>Voto registrado correctamente</p>";
                                            echo '<br/>';
                                        } else {
                                            echo '<p> El plazo de la votación ha finalizado</p>';
                                }
                            }else{
                                echo "<p>Error, ya has votado </p>";                                
                                }
                        }
                    }
                            if (!isset($_GET['resultado'])) 
                                echo "<p><a href='index.php?votacion={$votacion_actual->getIdVotacion()}&resultado'>Ver resultados</a></p>";
                            else
                                echo "<p><a href='index.php?votacion={$votacion_actual->getIdVotacion()}'>Votar</a></p>";
                            echo "<p><a href='index.php?asamblea={$votacion_actual->getIdAsamblea()}'>Volver a las votaciones de {$asamblea->getNombre()}</a></p>";
                            echo "<p><a href='index.php?start'>Lista de Asambleas</a></p>";
                }
                else
                    echo "No hay opciones para esta votacion";
            } else {
                echo "No tienes permisos para participar en esta votación";
            }
        }
        else
            echo "La votación no existe";
    }
    else
        echo "No se ha escogido ninguna asamblea o votacion";
}
else {
    echo "error, sesión no iniciada";
}
        ?>
